Interactive video generation

ABSTRACT

A method includes receiving an input from a user, the input including a selection of an object, where the object is contained in a video, identifying, in response to the input, the object in the video, determining an attribute of the object associated with a profile of the user, where the profile contains a preference of the user regarding at least one object to be viewed, and determining, in response to the attribute of the object associated with the profile, a target segment in the video, where the target segment includes the object.

BACKGROUND

The present invention generally relates to multimedia, image processing,and analytics, and more particularly, to a method for generatingpersonal visual segments from a video based on user preferences.

Video technology is a popular instrument for entertainment and/ordelivering information. Movies, television programs, and games may beprovided by local or remote sources for recording, copying, playback,broadcasting, and display of moving visual media. Media player devicesincluding, for example, personal computers (PCs), mobile devices, cabletelevision boxes, video game consoles may obtain videos from such localor remote sources and present them to a plurality of users.

SUMMARY

In one aspect of the present disclosure, a computer-implemented methodis proposed. According to the method, an input from a user is received.In response, an object is identified from a video. Then, it isdetermined whether the object has an attribute associated with a profileof the user. The profile indicates preference of the user concerningobjects to be viewed. If the object has an attribute associated with theprofile, a target segment including the object is determined from thevideo.

In another aspect of the present disclosure, a device is proposed. Thedevice includes one or more processors and a memory coupled to at leastone of the processors. A set of computer program instructions are storedin the memory and executed by at least one of the processors in order toperform actions. The actions include identifying an object in a video inresponse to receiving an input from a user; determining whether theobject has an attribute associated with a profile of the user, theprofile indicating preference of the user concerning objects to beviewed; and in response to determining that the object has an attributeassociated with the profile, determining a target segment including theobject from the video.

In yet another embodiment, a computer program product is proposed. Thecomputer program product is tangibly stored on a non-transient machinereadable medium and comprising executable instructions which, whenexecuted on a device, cause the device to identify an object in a videoin response to receiving an input from a user; determine whether theobject has an attribute associated with a profile of the user, theprofile indicating preference of the user concerning objects to beviewed; and in response to determining that the object has an attributeassociated with the profile, determine a target segment including theobject from the video.

BRIEF DESCRIPTION OF THE DRAWINGS

The following detailed description, given by way of example and notintended to limit the invention solely thereto, will best be appreciatedin conjunction with the accompanying drawings, in which:

FIG. 1 is a block diagram of internal and external components of acomputer device, according to an embodiment of the present disclosure;

FIG. 2 is a schematic diagram of a computer device, according to anembodiment of the present disclosure;

FIG. 3 is a flowchart describing the steps of a method for videointeraction, according to an embodiment of the present disclosure;

FIG. 4 is a flowchart describing the steps of a method for videointeraction, according to an embodiment of the present disclosure;

FIG. 5 is a schematic diagram of video interaction, according to anembodiment of the present disclosure;

FIG. 6 is a block diagram of an illustrative cloud computingenvironment, according to an embodiment of the present disclosure; and

FIG. 7 is a block diagram of functional layers of the illustrative cloudcomputing environment of FIG. 6, according to an embodiment of thepresent disclosure.

The drawings are not necessarily to scale. The drawings are merelyschematic representations, not intended to portray specific parametersof the invention. The drawings are intended to depict only typicalembodiments of the invention. In the drawings, like numbering representslike elements.

DETAILED DESCRIPTION

Detailed embodiments of the claimed structures and methods are disclosedherein; however, it can be understood that the disclosed embodiments aremerely illustrative of the claimed structures and methods that may beembodied in various forms. This invention may, however, be embodied inmany different forms and should not be construed as limited to theexemplary embodiments set forth herein. In the description, details ofwell-known features and techniques may be omitted to avoid unnecessarilyobscuring the presented embodiments.

Typically, a video is presented to a user in a passive way not aninteractive way. For instance, if the user is interested in viewing orobtaining more details about a certain object (e.g. a movie star in thevideo), the user has to watch the video in its entirety and/or manuallylook for video segments (also referred to as the “segments”) or imagesin which the object of interest (e.g. movie star) appears. Although somevideo games have used pre-recorded video sequences that are displayed inresponse to a user input, such user input is typically used to maintainthe video games running and not to improve the user experience.Therefore, by taking into account preferences defined by a user in auser profile, embodiments of the present disclosure may, among otherpotential benefits, provide an interactive video format such that thepreferences specified by the user in the user profile are met.

Referring now to FIG. 1, an exemplary device, referred to as computersystem/server 12, which is appropriate to implement the embodiments ofthe present disclosure is shown. Computer system/server 12 is onlyillustrative and is not intended to suggest any limitation as to thescope of use or functionality of embodiments of the disclosure describedherein.

As shown in FIG. 1, computer system/server 12 is depicted in the form ofa general-purpose computing device. The components of computersystem/server 12 may include, but are not limited to, one or moreprocessors or processing units 16, a system memory 28, and a bus 18 thatcouples various system components including system memory 28 toprocessor 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnect (PCI) bus.

Computer system/server 12 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 12, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 30 and/or cachememory 32. Computer system/server 12 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 34 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 18 by one or more datamedia interfaces. As will be further depicted and described below,memory 28 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the disclosure.

Program/utility 40, having a set (at least one) of program modules 42,may be stored in memory 28 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 42 generally carry out the functions and/ormethodologies of embodiments of the disclosure as described herein.

Computer system/server 12 may also communicate with one or more externaldevices 14 such as a keyboard, a pointing device, a display 24, and thelike. One or more devices that enable a user to interact with computersystem/server 12; and/or any devices (e.g., network card, modem, etc.)that enable computer system/server 12 to communicate with one or moreother computing devices. Such communication can occur via input/output(I/O) interfaces 22. Still yet, computer system/server 12 cancommunicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 20. As depicted, network adapter 20communicates with the other components of computer system/server 12 viabus 18. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 12. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, and thelike.

In computer system/server 12, I/O interfaces 22 may support one or moreof various different input devices that can be used to provide input tocomputer system/server 12. For example, the input device(s) may includea user device such keyboard, keypad, touch pad, trackball, and the like.The input device(s) may implement one or more natural user interfacetechniques, such as speech recognition, touch and stylus recognition,recognition of gestures in contact with the input device(s) and adjacentto the input device(s), recognition of air gestures, head and eyetracking, voice and speech recognition, sensing user brain activity, andmachine intelligence.

It should be noted that the computer system/server 12 may be implementedas any suitable computing device, including but not limited to, apersonal computer, a workstation, a mainframe, a midrange computer, anetwork appliance, a palm top computer, a telephony device, a bladecomputer, a hand held computer, and the like.

Referring now to FIG. 2, a schematic diagram of a device 200 in whichembodiments of the present disclosure can be implemented is shown. Thedevice 200 may be implemented by the computer system/server 12 asillustrated in FIG. 1. Examples of the device 200 may include, but arenot limited to, mobile phones, desktops, laptops and tablets, or anyother suitable computing system/device, either known at present or to bedeveloped in the future.

Specifically, in the example shown in FIG. 2, the device 200 identifiesan object in a video upon receipt of an input 210 from a user(hereinafter referred to as “user input”). In embodiments of the presentdisclosure, the term “object” may refer to a product, a person, afacility, and/or any other thing that appears in the video. Then, thedevice 200 determines whether the object has an attribute associatedwith a profile of the user (also referred to as “user profile” or“profile”). The attribute of the object may generally includecharacteristics of the object, for example, a type of the object, targetcustomers of the object, prices of the object, manufacturers of theobject, and so on.

The user profile may include at least one preference of the userconcerning objects to be viewed. If the object has an attributeassociated with the profile, the device 200 determines a target videosegment (also referred to as “target segment”) including the object fromthe video. The target segment may consist of one or more segmentsincluding the object. As such, the target segment may be determined fromthe video according to the user's preference. In this way, it ispossible to meet the user's personalized demands by displaying thetarget segment(s) containing the object the user is interested in,thereby improving the user experience.

It may be understood that the device 200 shown in FIG. 2 is describedmerely for the purpose of illustration, without suggesting anylimitation as to the scope of the disclosure. Those skilled in the artwill appreciate that various other implementations of the device 200 arecontemplated.

Referring now to FIG. 3, a method 300 for video interaction is describedin accordance with embodiments of the present disclosure. The method 300may be at least in part implemented by, for example, the device 200(FIG. 2).

The method 300 may start at step 310, where an object in a video isidentified in response to receiving an input from a user. As describedabove the object may include, for example, a product, a person, afacility, and/or any other thing that appears in the video. In someembodiments, the product may include, but is not limited to, dresses,jerseys, scarves, gloves, balls, musical instruments, foods, drinks,mobile phones, and laptops. The person may be, for example, a moviestar, an athlete, a model, or any other person that appears in thevideo. The facility may be, for example, a stadium, a museum, and thelike. It should be noted that the above examples are only described forillustration rather than limitation, those skilled in the art wouldunderstand that the object may refer to any other suitable things.

The user may manipulate the device 200 (FIG. 2) via a keyboard, keypad,touch screen, trackball, and the like. Upon detection of the user input(e.g. a finger of the user contacting the touch screen), the device 200(FIG. 2) may identify an object from the video corresponding to aposition of the user's finger on the touch screen. The identificationmay be implemented in a variety of ways. In some embodiments, the device200 (FIG. 2) may determine a frame of the video corresponding to theuser input in terms of time. That is, the frame is an image in the videowhich is being presented at the time of receiving the user input. Then,the device 200 (FIG. 2) may identify the object from the determinedframe by performing image recognition techniques, such as, for example,edge matching, divide-and-conquer search, greyscale matching, andgradient matching.

It may be understood that the above embodiments for identifying theobject by performing image recognition are described only for thepurpose of illustration to help those skilled in the art to understandthe present disclosure, without suggesting any limitations as to thescope of the disclosure. It would be appreciated that the imagerecognition may be implemented in a variety of ways, which are notdetailed here to avoid obscurity.

Alternatively, in some embodiments, it may be unnecessary to performreal-time image recognition when identifying the object at step 310.Instead, the object may be identified from the frame based on an objectposition list. The object position list includes information aboutpositions of objects in frames of the video. Such a list may be created,for example, in generation of the video or post-processing of the video.In those embodiments, the device 200 (FIG. 2) may determine a frame ofthe video corresponding to the user input in terms of time, and thendetermine a position of the user input on the frame. With the positionof the user input, the device 200 (FIG. 2) may determine a matchedposition from the positions predefined in the object position list, andfind the object corresponding to the matched position based on theobject position list.

Next, in step 320, it is determined whether the object has an attributeassociated with a user profile. A user profile includes personal dataassociated with the user, for example, the user's hobbies, habits,interests, gender and/or age. The profile may be used to determine thepreference of the user for the objects to be viewed. In one embodiment,if the profile indicates that the user is a female, it may be determinedthat the user would like to view objects associated with shopping,cosmetics, movies, and the like. In another embodiment, if the profileindicates that the user is a male who has interest in basketball, it maybe determined that the user would like to view objects associated withbasketball games, basketball star players, and the like.

The profile may be generated by collecting personal information of theuser, for example, when the user registers with a video playing system.Alternatively, or in addition, information in the profile may beobtained, for example, from a video viewing history and/or a browsinghistory of the user. It may be understood that these examples aredescribed for illustration rather than limitation. Those skilled in theart may obtain the profile in many other suitable ways. The profile maybe stored in a local storage, for example, a hard disk, a portablecomputer diskette, a flash memory, and a memory stick, or a remotestorage, for example, a cloud storage system, or other suitable storageaccessible to the device 200 (FIG. 2).

In some embodiments, in step 320, the device 200 (FIG. 2) may determinewhether the object has an attribute. If the object has an attribute, thedevice 200 (FIG. 2) further determines whether the attribute matches theprofile. If the object has two or more attributes, the device 200 (FIG.2) may determine whether any of the attributes matches the profile. Ifthe device 200 finds that an attribute of the object matches the profile(that is, there is a matching attribute), the method 300 proceeds tostep 330.

In some embodiments, it is possible that the object does not have anymatched attribute. For example, the object does not have any attribute,or none of the object's attributes matches the profile. If suchattribute mismatching occurs, it may be determined that the object doesnot have an attribute associated with the profile. Then, the method 300may proceed to an attribute generation procedure in which an attributemay be generated for the object based on the profile. The attribute maybe generated immediately after the device 200 (FIG. 2) cannot find thematching attribute. As an alternative, the attribute may be generatedafter a predetermined time of attribute mismatching, as will bediscussed in detail below with reference to FIG. 4.

Next, in step 330, in response to determining that the object has anattribute associated with the profile, a target segment including theobject is determined from the video. The determined target segment,which contains one or more objects the user is interested in, may bedisplayed to the user, for example, on a display screen of the device200 (FIG. 2) in order to improve the user experience.

In some embodiments, there may be a plurality of segments that includethe object, which are referred to as “candidate segments.” In step 330,the device 200 (FIG. 2) may obtain the candidate segments from thevideo, each of which may have characteristics, such as a durationindicating the length of the segment and a start timestamp. The starttimestamp indicates an instant of the beginning of a candidate segmentin the video. Additionally, each segment may have many other suitablecharacteristics, for example, visual quality, associated object(s), andthe like. With the information about durations of the candidatesegments, the device 200 (FIG. 2) may determine the target segment fromthe candidate segments according to a predetermined time interval of thetarget segment. The predetermined time interval may be set, for example,as 5 seconds, by the user, the provider of the video or other relatedparty. In an example where there are 10 candidate segments and theduration of each candidate segment is 1 second, the device 200 mayselect 5 candidate segments from the 10 candidate segments and combinethem as the target segment. Examples of the determination of the targetsegment will be discussed in detail below with reference to FIG. 4.

Referring now to FIG. 4, a flow chart describing the steps of a method400 for video interaction is shown in accordance with furtherembodiments of the present disclosure. The method 400 may be consideredan implementation of the method 300. It may be understood that themethod 300 may be implemented in several ways as discussed above, andthe method 400 is only one example instead of a limitation.

The method 400 may start at step 410, where a frame of the videocorresponding to the user input in terms of time is determined, asdescribed above. In step 420, a position of the user input on the frameis determined. In some embodiments, the input may be the contact of theuser's finger. The position of the input may be determined as thecoordinates of the finger contact on the frame. In step 430, the objectis determined from the frame based on the determined position and anobject position list. The object position list may be defined bycorrelating objects in the video with their positions in respectiveframes. An example of the object position list is shown in Table 1.

TABLE 1 Object Frame ID Location Range Star player 1 510 (50, 50) (100,100)

In the example of Table 1, the object is a star player 1 located in therange “(50, 50) (100, 100)” in the frame 510. The coordinates of the topleft corner of the location range are (50, 50), and the coordinates ofthe bottom right corner of the location range are (100, 100). It may beunderstood that the above object position list is just an example,rather than limitation. Those skilled in the art would appreciate thatthe object position list may be implemented in other suitable ways. Forexample, Table 2 shows another example of the object position list.

TABLE 2 Start Object Timestamp Duration Location Range Star player 100:16:25 1 s (50, 50) (100, 100)

In the example of Table 2, the object is the star player 1 in a segmentthat starts at a timestamp of 00:16:25 and its duration is 1 s. Theobject is located in a location range of the segment. The coordinates ofthe top left corner of the location range are (50, 50), and thecoordinates of the bottom right corner of the location range are (100,100). It is to be understood that a range in a frame may be representedin any suitable ways other than the one shown in Table 1. In someembodiments, a segment may include one or more frames. It may beverified whether the frame determined in step 410 belongs to thesegment. If so, the corresponding frame may be found and it may bedetermined whether the position of the user input corresponds to anobject.

For instance, in the schematic diagram 500 shown in FIG. 5, a frame 510is determined according to the user input. The user input is detected aslocated at a position 511, which has coordinates of (60, 80). Since thecoordinates (60, 80) fall into the location range (50, 50) (100, 100) ofthe object “Star player 1” of the object position list, as illustratedby Table 1, it may be determined that the user input corresponds to theobject “Star player 1” 502.

With continued reference to FIG. 4, in step 440, it is determinedwhether the object has an attribute. If the object has an attribute, themethod 400 proceeds to step 460 to make further judgment. If the objectdoes not have any attribute, the method 400 goes to step 450 where a newattribute is generated for the object.

In step 450, a new attribute is generated for the object based on theuser profile. In some embodiments, an attribute may be generated for theobject based on the preference of the user immediately after the device200 cannot find the matching attribute. In this case, if the profileindicates the user prefers to view objects related to shopping, anattribute of “shopping” may be assigned to the object. As analternative, the attribute generation procedure may be performed after apredetermined time of attribute mismatching is reached. For instance, ifan object has been selected by three users and the attribute mismatchinghas happened three times, then the device 200 may generate one or moreattributes for the object by considering profiles of the three users.

In step 460, it is determined whether the attribute matches the userprofile. In some embodiments, the object may have several attributes,and each of the attributes may be compared with the profile. If none ofthe attributes matches the profile, the method 400 goes to step 450 togenerate a new attribute for the object. If there is any attribute thatmatches the profile, it may be determined that the object has anattribute associated with the profile, and the method 400 proceeds tostep 470.

In some embodiments, the object and its attribute may be recorded in avariety of ways. Table 3 shows examples of records for three objects andtheir respective attributes.

TABLE 3 Detail Time Class Class Class Target Object Info Interval 1 2 3Class 4 Audience Clothes . . . 1 s Article Clothes Fe- {Blue, {Female, 1male Stripes} 18 to 35 years old, Shopping} Star . . . 5 s Person SportsFoot- {Kicking {Male, player ball actions, Female, 1 Reaction 36 to 50shots} years old, Football} Foot- . . . 3 s Article Sports Foot- Null{Male, ball ball Null, Football}

Table 3 illustrates three objects, namely, “Clothes 1”, “Star player 1”,and “Football.” Each of the objects may have detailed information aboutintroduction of the object, historical records of the object, and thelike. Furthermore, each of the objects has a time interval, which may bepredetermined as the length of the target segment associated with theobject. In the example of Table 3, each of the objects has multipleattributes, such as, Class 1, Class 2, Class 3, Class 4 and TargetAudience. In an embodiment, it is supposed that the object identified instep 430 is “Star player 1,” and it may be determined that the objecthas the attributes including “Person,” “Sports,” “Football,” “Kickingactions,” “Reaction shots,” “Male,” “Female,” and “36 to 50 years old.”In particular, Class 4 of the object “Star player 1” is “{Kickingactions, Reaction shots,” which indicates that object “Star player 1”has segment(s) regarding kicking actions and segment(s) regardingreactions shots. It may be understood that the attributes shown in Table3 are only described for illustration rather than limitation. Thoseskilled in the art would readily understand that an object may have manyother attributes.

Whether the attribute matches the user profile may be determined in avariety of ways. In an example, the user profile may include contents asshown in Table 4 below.

TABLE 4 Hobby Habit Gender Age . . . Football Viewing kicking Male 37 .. . actions

In the example of Table 4, the user profile indicates that the user hasa hobby of “football”, a habit of “viewing kicking actions”, a gender of“male”, and an age of about 37 years old. In some embodiments, in thedetermination of whether there is an attribute associated with theprofile, similarities between an attribute of the object and contents inthe profile may be calculated, and if any of the similarities exceeds apredetermined threshold, it may be determined that the attribute matchesthe profile and is thus associated with the profile. Referring back tothe example described above with respect to Table 3, where attributes ofthe object “Star player 1” include “Person”, “Sports”, “Football”,“Kicking actions”, “Reaction shots”, “Male”, “Female”, and “36 to 50years old”, it may be determined that there are several attributes, suchas “Football”, “Kicking actions”, “Male”, and “36 to 50 years old”,matching the user profile of Table 4. As such, it may be determined thatthe attribute matches the user profile in step 460, and the method 400then proceeds to step 470.

It may be understood that the attributes shown in Table 4 are onlydescribed for illustration rather than limitation. Those skilled in theart would readily appreciate that the user profile may have many othercontents, and the matching between an attribute of the object and theuser profile may be implemented in other suitable ways.

In step 470, candidate segments including the object are obtained fromthe video. In some embodiments, a video, a plurality of segmentsincluding various objects may be selected and recorded in advance. Forexample, records about segments including the objects are shown in Table5 below.

TABLE 5 Start Quality Other Object Segment Timestamp Duration Level Typeobject Star player 1 1 T1 1 s 3 Kicking Football actions Star player 1 2T2 1 s 3 Reaction Null shots . . . . . . . . . . . . . . . . . . Clothes1 N-1 T_(N-1) 1 s 5 Blue Star Player 2 Clothes 1 N T_(N) 1 s 4 StripesStar Player 1

In Table 5, the object “Star player 1” is included in segment 1 andsegment 2. The segment 1 starts at a start timestamp T1 and lasts 1 s.The quality level of the object is 3, which indicates the quality of thesegment, such as resolution, definition, signal-to-noise ratio (SNR),and so on. In some embodiments, the larger the quality level of theobject, the better the quality of the segment. In Table 5, “Type”indicates the type of the object included in a segment. For instance,with respect to segment 1, the type is “Kicking actions”, whichindicates that segment 1 relates to the kicking actions of the starplayer 1. Likewise, the segment 2 relates to the reaction shots of thestar player 1. Additionally, in Table 5, “Other object” indicatesanother object associated with the object. For example, if both the starplayer 1 and a football appear in the segment 1, the object “Star player1” may be determined as being associated with an object “Football”.

In the example of Table 5, the segment 1 and the segment 2 may bedetermined as the candidate segments including the object “Star player1”. It may be appreciated that the candidate segments may include a partor all of the segments that contain the object.

In step 480, the target segment is determined from the candidatesegments. In some embodiments, the target segment may be directlydetermined as a combination of all the candidate segments. As analternative, the target segment may be determined from the candidatesegments based on the user profile. For example, for a user (hereinafter“user A”) who is male and is interest in kicking actions, candidatesegments regarding kicking actions of a star player may be selected andcombined as a target segment. For another user (hereinafter “user B”)who is female and is interest in reaction shots, candidate segmentsregarding reaction shots of the star player may be selected and combinedas a target segment.

For instance, as shown in FIG. 5, a candidate segment group 520 isobtained from the video. The candidate segment group 520 includes sixcandidate segments 521, 522, 523, 524, 525 and 526. Each of the sixcandidate segments includes the object “Star player 1” 502. For the userA, the target segment is determined based on a subgroup of the candidatesegments 530 regarding kicking actions of the “Star player 1.” For theuser B, the target segment is determined based on a subgroup ofcandidate segments 540 regarding reaction shots of the “Star player 1”.

Alternatively, or in addition, in some embodiments, the target segmentmay be determined from the candidate segments based on durations of thecandidate segments and a predetermined time interval of the targetsegment. In an embodiment, a total sum of the durations of all thecandidate segments may be calculated. If the total sum exceeds apredetermined time interval of the target segment, some of the candidatesegments are selected in such a way that a sum of durations of theselected candidate segments equals to the predetermined time interval ofthe target segment. Then the target segment may be obtained by combiningthe selected candidate segments.

In addition, or alternatively, if the total sum of the durations of thecandidate segments is less than the predetermined time interval of thetarget segment, the candidate segments may be processed to meet the timerequirement of the target segment in several ways. In an embodiment,weights may be determined for the candidate segments based on attributesof the candidate segments and/or the profile of the user. For example,the weights may be determined according to the quality levels of therespective candidate segments. Then, the durations of the candidatesegments may be weighted, such that a sum of durations of the weightedcandidate segments equals to the predetermined time interval of thetarget segment. The target segment may be obtained by combining theweighted candidate segments.

Therefore, by receiving an input from a user, where the input includes aselection of an object contained in a video, the object can beidentified in response to the input and an attribute of the objectassociated with a profile of the user can be determined such that atarget segment in the video containing the object can be obtainedaccording to a preference of the user regarding at least one object tobe viewed.

The methods 300 and/or 400 may be implemented by computer programs. Forexample, the computer programs, when executed by a processor on a device(such as the computer system 12 shown in FIG. 1, or one or more cloudcomputing nodes 100 (FIG. 6), may be loaded into the memory and causethe device to implement the method 300 and/or 400.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g. networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure comprising anetwork of interconnected nodes.

Referring now to FIG. 6, illustrative cloud computing environment 600 isdepicted. As shown, cloud computing environment 600 comprises one ormore cloud computing nodes 100 with which local computing devices usedby cloud consumers, such as, for example, personal digital assistant(PDA) or cellular telephone 600A, desktop computer 600B, laptop computer600C, and/or automobile computer system 600N may communicate. Nodes 100may communicate with one another. They may be grouped (not shown)physically or virtually, in one or more networks, such as Private,Community, Public, or Hybrid clouds as described hereinabove, or acombination thereof. This allows cloud computing environment 600 tooffer infrastructure, platforms and/or software as services for which acloud consumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 600A-Nshown in FIG. 6 are intended to be illustrative only and that computingnodes 100 and cloud computing environment 600 can communicate with anytype of computerized device over any type of network and/or networkaddressable connection (e.g., using a web browser).

Referring now to FIG. 7, a set of functional abstraction layers 700provided by cloud computing environment 600 (FIG. 6) is shown. It shouldbe understood in advance that the components, layers, and functionsshown in FIG. 7 are intended to be illustrative only and embodiments ofthe invention are not limited thereto. As depicted, the following layersand corresponding functions are provided:

Hardware and software layer 7010 includes hardware and softwarecomponents. Examples of hardware components include: mainframes; RISC(Reduced Instruction Set Computer) architecture based servers; storagedevices; networks and networking components. In some embodiments,software components include network application server software.

Virtualization layer 7012 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers;virtual storage; virtual networks, including virtual private networks;virtual applications and operating systems; and virtual clients.

In one example, management layer 7014 may provide the functionsdescribed below. Resource provisioning provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricingprovide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal provides access to the cloud computing environment forconsumers and system administrators. Service level management providescloud computing resource allocation and management such that requiredservice levels are met. Service Level Agreement (SLA) planning andfulfillment provide pre-arrangement for, and procurement of, cloudcomputing resources for which a future requirement is anticipated inaccordance with an SLA. A program for interactive video generation.

Workloads layer 7016 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation; software development and lifecycle management; virtualclassroom education delivery; data analytics processing; and transactionprocessing.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method comprising: receiving, by a device, aninput from a user, the input comprising a selection of an objectcontained in a video played on the device, the selection is made via atouch gesture performed by a user's finger on a touchscreen of thedevice; determining a frame of the video comprising an image displayedat a time the input from the user is received; determining a position ofthe input of the user on the frame; identifying the object in thedetermined frame by applying image recognition techniques, theidentifying of the object from the frame is based on the determinedposition and an object position list, the object position listcomprising information about positions of objects in the video;comparing attributes of the object with user preferences defined in auser profile, the attributes comprising object characteristics, anobject type, an object target customers, object price, and an objectmanufacturer, and the user preferences comprising one or morecharacteristics of the object previously selected by the user; inresponse to at least one attribute of the object matching at least oneuser preference defined in the user profile, identifying segments fromthe video which display the object, each segment comprising a durationand one or more frames; calculating a total sum of the duration of theidentified segments; comparing the total sum to a predetermined timeinterval; and based on the calculated sum being equal to thepredetermined time interval, combining the identified segments toprovide a video tailored to the user preferences specified in the userprofile.
 2. The method of claim 1, wherein the image recognitiontechniques comprise edge matching, divide-and-conquer search, greyscalematching, and gradient matching.
 3. The method of claim 1, furthercomprising: generating the attributes for the object based on the userprofile.
 4. The method of claim 1, further comprising: selecting, inresponse to the calculated sum exceeding the predetermined timeinterval, a portion of each identified segment based on the userprofile; and combining the portion of each identified segment.
 5. Themethod of claim 1, further comprising: determining, in response to thecalculated sum being less than the predetermined time interval, weightsfor the identified segments based on attributes of the identifiedsegments; weighting the duration of the identified segments; andcombining the identified segments.
 6. A method comprising: receiving, bya device, a user input comprising a touch gesture performed by a user'sfinger on a touchscreen of the device, wherein an object is selectedamong one or more objects contained in a video played by the device viathe touch gesture, the object comprising a product, a person, or afacility of interest to a user of the device; determining a frame of thevideo comprising an image displayed at a time the user's finger contactsthe touchscreen; determining a first set of coordinates corresponding toa position of the user's finger on the frame; obtaining an objectposition list comprising a frame id associated with a second set ofcoordinates for each object in the one or more objects, wherein eachsecond set of coordinates corresponds to a location range associatedwith each of the one or more objects in the video; based on the firstset of coordinates being located within the second set of coordinates ofat least one object within the one or more objects, recognizing the atleast one object as the object selected by the user's finger; comparingattributes of the object with user preferences defined by a userprofile, the attributes comprising object characteristics, an objecttype, an object target customers, object price, and an objectmanufacturer, and the user preferences comprising one or morecharacteristics of the object previously selected by the user; inresponse to at least one attribute of the object matching at least oneuser preference defined by the user profile, identifying segments fromthe video which display the object, each segment comprising a durationand one or more frames; calculating a total sum of the duration of theidentified segments; comparing the total sum to a predetermined timeinterval; and based on the calculated sum being equal to thepredetermined time interval, combining the identified segments toprovide a video tailored to the user preferences specified in the userprofile.
 7. The method of claim 6, further comprising: generating theattributes for the object based on the user profile.
 8. The method ofclaim 6, further comprising: selecting, in response to the calculatedsum exceeding the predetermined time interval, a portion of eachidentified segment based on the user profile; and combining the portionof each identified segment.
 9. The method of claim 6, furthercomprising: determining, in response to the calculated sum being lessthan the predetermined time interval, weights for the identifiedsegments based on attributes of the identified segments; weighting theduration of the identified segments; and combining the identifiedsegments.